home *** CD-ROM | disk | FTP | other *** search
- Configurable package hierarchies
-
- This document describes a mechanism for allowing aptitude and other APT
- frontends to dynamically generate a package hierarchy using information
- stored on the system. The mechanism allows packages to be placed in arbitrary
- groups and groups to be placed within arbitrary other groups.
-
- ===============================================================================
-
- Abstract structure
-
- The hierarchy information is input as a directed acyclic graph. Each node
- of the graph is either a "group" or a "package"; only "group" nodes may have
- successors. The user may define one or more groups as the starting point(s)
- for the displayed hierarchy; the program will then generate a tree from the
- graph using those nodes as the top-level nodes in the tree.
-
- This is not a terribly complex system with tons of research behind it;
- however, it IS very simple (trivial, in fact) to implement, and will easily
- beat the pants off the horrendous Section-based grouping that we are stuck
- with today.
-
- ===============================================================================
-
- File format
-
- Hierarchy information is stored in a tagfile format similar to that
- used by dpkg. (this is done primarily because apt has simple facilities for
- parsing such files) Each record in the tagfile after the first will have one
- of two formats:
-
- (a) Package records
-
- Package: foo
- Parents: group1,group2,...,groupN
-
- (b) Group records
-
- Group: bar
- Description: A holding pen for foos.
- Parents: group1,group2,...,groupN
-
- In each case, the first line identifies the package or group for which
- information is being entered, while successive lines provide information
- about the package or group. It is an error if both a Group and a Package
- tag exist in a given record.
-
- References are resolved after all data has been read (ie, references
- to not-yet-defined groups will work) Dangling references are allowed;
- if an item is placed into a group which does not exist at all, that
- reference will simply be ignored. Circular references will generate
- an error.
-
- Package names must be valid package names for the Debian package
- database. If a name which specifies a package not in the current APT
- cache is encountered, it will be ignored.
- Group names must follow the same rules as package names, with the
- exception that they may contain any number of periods separating
- groups of alphanumerics/hyphens. (so "dnb.lisp" is a valid group)
-
- Note: groups and packages have entirely disjoint namespaces. It is
- valid (albiet confusing) for a group "linux-doc" and a package
- "linux-doc" to coexist.
-
- In the future, the Description field may have an extended component,
- interpreted in the same way as the extended Package description. It
- may also become possible to override package descriptions from within
- a hierarchy definition.
-
- One exception to this format exists. The first record in a file may have
- the format:
-
- Global: yes
- Realm: britannia
-
- In this case, all future group names in the file which do not
- include a "." will have "britannia." prepended to their name. This is
- a mechanism to avoid namespace collisions.
-
- Future global file options may be added.
-